export const treeMenu = (menuArr: any[]) => {
  const menuTree: any = []
  menuArr.forEach(item => {
    const { id, name, path } = item
    if (item.parent) {
      // 查找父节点是否存在
      const parent = menuArr.find(i => i.id === item.parent.id)
      // 存在添加子节点
      if (parent) {
        parent.children = parent.children || []
        delete item.parent
        delete item.isFather
        delete item.desc
        parent.children.push(item)
      } else {
        // 如果父节点不存在，就添加父节点
        // 如果是第一次添加 ---> 没有parent
        const parent = getFater(menuTree, item)
        // 第一次添加
        if (!parent) {
          const a = item.parent.path.split('/')
          a.pop()
          const fatherPath = a.join('/')
          const parent = menuTree.find(i => i.path === fatherPath)
          const addParent = {
            id: item.parent.id,
            name: item.parent.name,
            path: item.parent.path,
            children: []
          }
          addParent.children.push({ id, name, path })
          if (parent) {
            parent.children.push(addParent)
          } else {
            menuTree.push(addParent)
          }
        } else {
          // 不是第一次添加
          parent.children.push({ id, name, path })
        }
      }
    } else {
      delete item.parent
      delete item.isFather
      delete item.desc
      menuTree.push(item)
    }
  })
  return menuTree
}

const getFater = (i, item) => {
  // undefined和对象的数组
  const father = i.map(j => {
    if (j.id === item.parent.id) {
      return j
    } else {
      if (j.hasOwnProperty('children')) {
        return getFater(j.children, item)
      } else return undefined
    }
  })
  return father.find(item => {
    return typeof item === 'object' && item !== null // 找到第一个类型为对象的元素
  })

  // return father[0]
  //   ? father[0]
  //   : father[1]
  //   ? father[1]
  //   : father[2]
  //   ? father[2]
  //   : undefined
}
